{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# 无监督学习---数据预处理: 聚类,主成分分析"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "## 1. 数据缩放 MinMaxScaler,RobustScaler,StandardScaler"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "#导入相关模块\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "import scipy as sc\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import mglearn\n",
    "%matplotlib inline\n",
    "\n",
    "#忽略弹出的warnings\n",
    "import warnings\n",
    "warnings.filterwarnings('ignore')  \n",
    "pd.set_option('display.float_format', lambda x: '%.5f' % x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "转换前最小值:\n",
      "[  6.98100000e+00   9.71000000e+00   4.37900000e+01   1.43500000e+02\n",
      "   5.26300000e-02   1.93800000e-02   0.00000000e+00   0.00000000e+00\n",
      "   1.06000000e-01   5.02400000e-02   1.15300000e-01   3.60200000e-01\n",
      "   7.57000000e-01   6.80200000e+00   1.71300000e-03   2.25200000e-03\n",
      "   0.00000000e+00   0.00000000e+00   9.53900000e-03   8.94800000e-04\n",
      "   7.93000000e+00   1.20200000e+01   5.04100000e+01   1.85200000e+02\n",
      "   7.11700000e-02   2.72900000e-02   0.00000000e+00   0.00000000e+00\n",
      "   1.56600000e-01   5.52100000e-02]\n",
      "转换前最大值:\n",
      "[  2.81100000e+01   3.92800000e+01   1.88500000e+02   2.50100000e+03\n",
      "   1.63400000e-01   2.86700000e-01   4.26800000e-01   2.01200000e-01\n",
      "   3.04000000e-01   9.57500000e-02   2.87300000e+00   4.88500000e+00\n",
      "   2.19800000e+01   5.42200000e+02   3.11300000e-02   1.35400000e-01\n",
      "   3.96000000e-01   5.27900000e-02   6.14600000e-02   2.98400000e-02\n",
      "   3.60400000e+01   4.95400000e+01   2.51200000e+02   4.25400000e+03\n",
      "   2.22600000e-01   9.37900000e-01   9.60800000e-01   2.91000000e-01\n",
      "   5.55800000e-01   1.48600000e-01]\n",
      "转换前最小值:\n",
      "[ 0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.\n",
      "  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.  0.]\n",
      "转换前最大值:\n",
      "[ 1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.\n",
      "  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.  1.]\n"
     ]
    }
   ],
   "source": [
    "#导入数据并对数据进行切分\n",
    "from sklearn.model_selection import train_test_split\n",
    "from sklearn.datasets import load_breast_cancer\n",
    "cancer = load_breast_cancer()\n",
    "x_train,x_test,y_train,y_test = train_test_split(cancer.data,cancer.target,test_size=0.3,random_state = 1)\n",
    "\n",
    "#归一化 MinMaxScaler,同理,还可以标准化数据 StandardScaler,四分位标准化 RobusstScaler\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "scaler = MinMaxScaler()\n",
    "model = scaler.fit(x_train)\n",
    "x_train_scaler = model.transform(x_train)\n",
    "\n",
    "#也可以使用方法链\n",
    "x_train_scaler = MinMaxScaler().fit(x_train).transform(x_train)\n",
    "\n",
    "#打印变换前后的数据\n",
    "print(\"转换前最小值:\\n{}\".format(x_train.min(axis =0)))\n",
    "print(\"转换前最大值:\\n{}\".format(x_train.max(axis =0)))\n",
    "#打印转换后\n",
    "print(\"转换前最小值:\\n{}\".format(x_train_scaler.min(axis =0)))\n",
    "print(\"转换前最大值:\\n{}\".format(x_train_scaler.max(axis =0)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2. 主成分分析(PCA) -------主要用于降维,特征提取"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 2.1 降维度及可视化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "原始数据:(569, 30)\n",
      "降维后的数据:(569, 4)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.datasets import load_breast_cancer\n",
    "cancer = load_breast_cancer()\n",
    "\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()\n",
    "scaler.fit(cancer.data)\n",
    "X_Scaler = scaler.transform(cancer.data)\n",
    "\n",
    "from sklearn.decomposition import PCA\n",
    "pca = PCA(n_components=4) #保留数据前3个主成分\n",
    "pca.fit(X_Scaler)\n",
    "\n",
    "#将数据变换到前三个主成分方向上\n",
    "x_pca = pca.transform(X_Scaler)\n",
    "print(\"原始数据:{}\".format(str(X_Scaler.shape)))\n",
    "print(\"降维后的数据:{}\".format(str(x_pca.shape)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'4th')"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x504 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,7))\n",
    "mglearn.discrete_scatter(x_pca[:,0],x_pca[:,1],cancer.target)\n",
    "plt.legend(cancer.target_names,loc=\"best\")\n",
    "plt.gca().set_aspect(\"equal\")\n",
    "plt.xlabel(\"1st\")\n",
    "plt.ylabel(\"2nd\")\n",
    "#######################################\n",
    "mglearn.discrete_scatter(x_pca[:,2],x_pca[:,3],cancer.target)\n",
    "plt.legend(cancer.target_names,loc=\"bad\")\n",
    "plt.gca().set_aspect(\"equal\")\n",
    "plt.xlabel(\"3rd\")\n",
    "plt.ylabel(\"4th\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.聚类 -K均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KMeans(algorithm='auto', copy_x=True, init='k-means++', max_iter=300,\n",
       "    n_clusters=3, n_init=10, n_jobs=1, precompute_distances='auto',\n",
       "    random_state=None, tol=0.0001, verbose=0)"
      ]
     },
     "execution_count": 41,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#导入数据及k均值分类器\n",
    "from sklearn.datasets import make_blobs\n",
    "from sklearn.cluster import KMeans\n",
    "\n",
    "#生成二维数据\n",
    "X,y = make_blobs(random_state = 1)\n",
    "#构建聚类模型\n",
    "kmeans = KMeans(n_clusters = 3)\n",
    "kmeans.fit(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0, 2, 2, 2, 1, 1, 1, 2, 0, 0, 2, 2, 1, 0, 1, 1, 1, 0, 2, 2, 1, 2, 1,\n",
       "       0, 2, 1, 1, 0, 0, 1, 0, 0, 1, 0, 2, 1, 2, 2, 2, 1, 1, 2, 0, 2, 2, 1,\n",
       "       0, 0, 0, 0, 2, 1, 1, 1, 0, 1, 2, 2, 0, 0, 2, 1, 1, 2, 2, 1, 0, 1, 0,\n",
       "       2, 2, 2, 1, 0, 0, 2, 1, 1, 0, 2, 0, 2, 2, 1, 0, 0, 0, 0, 2, 0, 1, 0,\n",
       "       0, 2, 2, 1, 1, 0, 1, 0], dtype=int32)"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "kmeans.labels_"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x11a69f320>,\n",
       " <matplotlib.lines.Line2D at 0x11a69f7b8>,\n",
       " <matplotlib.lines.Line2D at 0x11a69fc18>]"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\noqAvIlJE/j865st03DEMjQAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mglearn.discrete_scatter(X[:,0],X[:,1],kmeans.labels_,markers=\"o\")\n",
    "mglearn.discrete_scatter(kmeans.cluster_centers_[:,0],kmeans.cluster_centers_[:,1],[0,1,2],markers=\"^\",markeredgewidth=2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 凝聚类 agglomerative clustering"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn.datasets import make_blobs\n",
    "X,y = make_blobs(random_state = 1)\n",
    "from sklearn.cluster import AgglomerativeClustering\n",
    "agg = AgglomerativeClustering(n_clusters=3)\n",
    "assignment = agg.fit_predict(X)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "Text(0,0.5,'Feature 1')"
      ]
     },
     "execution_count": 48,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nhqpqIGsZlAAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "mglearn.discrete_scatter(X[:,0],X[:,1],assignment)\n",
    "plt.grid(True)\n",
    "plt.xlabel(\"Feature 0\")\n",
    "plt.ylabel(\"Feature 1\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## DBSCAN聚类----------优点:不需要设置,需要将数据先标准化"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[<matplotlib.lines.Line2D at 0x11d5652e8>,\n",
       " <matplotlib.lines.Line2D at 0x11d565438>,\n",
       " <matplotlib.lines.Line2D at 0x11d565908>]"
      ]
     },
     "execution_count": 55,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\nRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 720x432 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn.datasets import make_blobs\n",
    "X,y = make_blobs(random_state = 1)\n",
    "#数据标准化\n",
    "from sklearn.preprocessing import StandardScaler\n",
    "scaler = StandardScaler()#无需设置簇的个数, 但需要先将数据标准化\n",
    "model = scaler.fit(X)\n",
    "X_scaler = model.transform(X)\n",
    "from sklearn.cluster import DBSCAN\n",
    "dbs = DBSCAN()\n",
    "pred = dbs.fit_predict(X_scaler)\n",
    "plt.figure(figsize=(10,6))\n",
    "mglearn.discrete_scatter(X_scaler[:,0],X_scaler[:,1],pred)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 聚类算法对比\n",
    "#### k-means 最常用, 但需要预先设定簇的个数, DBSCAN 可以自动判断簇的数量, 使用与无法预算判断簇的数量的复杂数据集, 凝聚类即是分层聚类,类似加权平均数"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
